package com.mycompany.webapp.action;

import java.util.LinkedHashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.mycompany.exception.ParamException;
import com.mycompany.model.ControlAcceso;
import com.mycompany.service.ControlAccesoManager;

/**
 * Clase con formulario JSF
 * @author javachavez
 */

@Component("controlAccesoForm")
@Scope("request")
public class ControlAccesoForm extends BasePage {
    private String id;
    public ControlAcceso controlAcceso = new ControlAcceso();
    public ControlAccesoManager controlAccesoManager;

    @Autowired
    public void setControlAccesoManager(ControlAccesoManager controlAccesoManager) {
        this.controlAccesoManager = controlAccesoManager;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public ControlAcceso getControlAcceso() {
        return controlAcceso;
    }

    public void setControlAcceso(ControlAcceso controlAcceso) {
        this.controlAcceso = controlAcceso;
    }

    public String edit() {
        // Workaround for not being able to set the id using #{param.id} when using Spring-configured managed-beans
        if (id == null) {
            id = getParameter("id");
        }
                
        if (id != null) {
            // assuming edit
            setControlAcceso(controlAccesoManager.read(new Long(id)));
        }

        return "success";
    }

    public String save() {
        if (controlAcceso.getId() != null && controlAcceso.getId() == 0) {
            controlAcceso.setId(null);
        }
        
        try {
        	if(controlAcceso.getId()!=null){
        		controlAccesoManager.update(controlAcceso);
        	}else{
        		controlAcceso = controlAccesoManager.create(controlAcceso);
        	}
        } catch (ParamException uex) {
            addError("ControlAcceso.exists");
            return "error";
        }
		
        
        addMessage("controlAcceso.saved", controlAcceso.toString());
        return "success";
    }

    public String delete() {
        controlAccesoManager.remove(controlAcceso.getId());
        addMessage("controlAcceso.deleted", controlAcceso.toString());

        return "success";
    }
    
    public Map getProtocolos() {
    	Map<String, String> options = new LinkedHashMap<String, String>();
    	options.put("UDP","UDP");
    	options.put("TCP","TCP");
        return options;
    }
    
    public Map getAccions() {
    	Map<String, String> options = new LinkedHashMap<String, String>();
    	options.put("ALLOW","ALLOW");
    	options.put("DENY","DENY");
        return options;
    }
}
